<?php


namespace app\admin\command;


use think\console\Command;
use think\console\Input;
use think\console\Output;
use think\Db;

class Seckill extends Command
{
    protected function configure()
    {
        $this->setName('Seckill')->setDescription('秒杀使用恢复价格');
    }
    protected function execute(Input $input, Output $output)
    {
        // `status` tinyint(2) DEFAULT '1' COMMENT '1关闭秒杀 2开启秒杀',
        $xs_goods=Db::name('xs_goods')->where([
            'status'=>2,
        ])->select();
        foreach ($xs_goods as $k=>$v){
            //todo 删除的时候进行设置 有商品不能删除
            $xsms_time=Db::name('xsms_time')->where([
                'is_del'=>0,
                'status'=>1,
                'id'=>$v['xs_id']
            ])->find();
            if ($xsms_time){
                //判断商品是否在秒杀范围中
                $start_time = strtotime($xsms_time['start_time']);
                $end_time = $start_time + ($xsms_time['delayed_time'] * 60);
                //在秒中的
                //goods is_ms 是否正在秒杀 1是 2不是
                if (time() >= $start_time && time() <= $end_time){
                    //正在秒杀哦
                    Db::name('goods_attr_value')
                        ->where('goods_id', '=', $v['goods_id'])
                        ->update([
                            'price' => $v['price'], // 直接使用 SQL 表达式
                        ]);
                    Db::name('goods')
                        ->where('id','=',$v['goods_id'])
                        ->update([
                        'is_ms'=>1
                    ]);
                }else{
                    Db::name('goods_attr_value')
                        ->where('goods_id', '=', $v['goods_id'])
                        ->update([
                            'price' => Db::raw('price2'), // 直接使用 SQL 表达式
                        ]);
                    Db::name('goods')->where('id','=',$v['goods_id'])->update([
                        'is_ms'=>2
                    ]);
                }

            }
        }
        $output->writeln('秒杀操作完成');
    }


}